package top.hudk.rpc.rpc1;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * 作用：构造接口代理类
 * 通过接口类型，以动态代理的方式，
 * 返回接口的代理实现对象
 *
 * @author hudk
 * @date 2020/12/10 0:00
 */
public class Loader {

    /**
     * 返回接口代理实现类
     *
     * @param clazz 接口类型
     * @return
     */
    public static Object lookup(Class clazz) {
        //代理处理类
        InvocationHandler invocationHandler = (proxy, method, args)
                -> RpcNetHelper.send(clazz, method, args);
        System.out.println("生成动态代理类。");
        //动态代理
        return Proxy.newProxyInstance(clazz.getClassLoader(), new Class[]{clazz}, invocationHandler);
    }
}
